﻿/*********************************************************************
 *
 *                             NOTICE
 *               COPYRIGHT (c) 2012 Panoscopix Software, Inc.
 *                UNPUBLISHED - ALL RIGHTS RESERVED
 * 
 *      This program is confidential, proprietary, and a trade
 *   secret of Panoscopix Software, Inc. The receipt or possession of
 *     this program does not convey any rights to reproduce or
 *      disclose its contents, or to manufacture, use, or sell
 *       anything that it may describe, in whole or in part, 
 *   without the specific written consent of Panoscopix Software, Inc.
 *
 * Interface for the Prototype Pattern (for Command).
 * Supports both a generic clone and String-based initializer.
 * 
 *******************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FileSystem
{
    interface ICommandPrototype
    {
        /// <summary>
        /// Clone this prototype to make a functional command.  Default initialization.
        /// </summary>
        /// <returns>The cloned and initialized Command.</returns>
        ICommand clone();

        /// <summary>
        /// Clone this prototype to make a functional command.  Supplied initialization.
        /// </summary>
        /// <param name="arg">Parameters to use for initialization.</param>
        /// <returns>The cloned and initialized Command.</returns>
        ICommand clone(String arg);

        /// <summary>
        /// Gets the description.
        /// </summary>
        IHelpDescription Description { get; }
    }
}
